Release 10.1A: OpenEdge Development:
Progress 4GL Reference
READ-XML( ) method
Reads an XML document into a ProDataSet, temp-table, or temp-table buffer object. You can read data, schema, or both.
Return type: LOGICAL Applies to: Buffer object handle, ProDataSet object handle, Temp-table object handle
source-typeA CHARACTER expression that specifies the source XML document type. Valid values are: “FILE”, “MEMPTR”, “HANDLE”, and “LONGCHAR”.
fileA CHARACTER expression that specifies the name of a file. You can specify an absolute pathname, a relative pathname (based on the current working directory), or a URL pathname. Valid URL protocols include FILE and HTTP (the HTTPS protocol is not supported). Progress verifies that the file exists and is accessible.
memptrA MEMPTR variable that contains the XML document text in memory. The size of the MEMPTR variable must match the size of the XML document text.
handleA WEB-CONTEXT system handle, X-document object handle, or X-noderef object handle.
For a WEB-CONTEXT system handle, the READ-XML( ) method reads an XML document from the WebSpeed transaction server. The method verifies that the XML document was posted to the WebSpeed transaction server (that is, the value of the IS-XML attribute for the handle is YES), and that Progress is running in a WebSpeed environment.
longcharA LONGCHAR variable that contains the XML document text in memory.
read-modeA CHARACTER expression that specifies the mode in which the READ-XML( ) method reads data from the XML document into a temp-table or ProDataSet member buffer. The expression must evaluate to “APPEND”, “EMPTY”, “MERGE”, or “REPLACE”. The default value is "MERGE".
Table 78 lists the READ-XML( ) method modes for reading data.
schema-locationA CHARACTER expression that specifies the name of an external XML Schema file to use in creating or verifying the object’s schema when reading in the XML document. You can specify an absolute pathname, a relative pathname (based on the current working directory), or a URL pathname. Valid URL protocols include FILE and HTTP (the HTTPS protocol is not supported). Progress verifies that the file exists and is accessible. When specified, Progress ignores any schema defined or referenced in the source XML Document.
If you specify the empty string ("") or the Unknown value (
?), Progress creates or verifies the object’s schema using any XML Schema defined or referenced in the XML document.override-default-mappingA LOGICAL expression where TRUE directs Progress to override the default mapping between XML Schema string and binary data types and Progress data types when creating a Progress temp-table schema from an XML Schema. The default value is FALSE.
The XML Schema string data type maps to the Progress CHARACTER data type by default, and the XML Schema base64Binary and hexBinary data types map to the Progress RAW data type by default. If you specify TRUE, the READ-XML( ) method creates a temp-table schema with CLOB and BLOB fields instead of CHARACTER and RAW fields.
If you specify the Unknown value (
?), the method uses the default value of FALSE.field-type-mappingAn optional CHARACTER expression that evaluates to a comma-separated list of field name, data type pairs using the following syntax:
This option allows you to specify the Progress data type for a specific field from the XML Schema.
field-nameA CHARACTER expression that evaluates to the name of the specified field. For a ProDataSet object, you must qualify the field name with the buffer name from the XML Schema. That is,
buffer-name.field-name.data-typeA CHARACTER expression that evaluates to the data type of the specified field. The data type must be a valid Progress data type, and it must be compatible with the XML Schema type based on the Progress XML data type mapping rules. For example, any XML Schema type can be mapped to a Progress CHAR or CLOB, but an XML Schema dateTime can be mapped only to a Progress DATE, DATETIME or DATETIME-TZ.
If you specify the Unknown value (
?), the method uses the default data type mapping. For more information about the Progress XML data type mapping rules, see OpenEdge Development: Programming Interfaces .verify-schema-modeAn optional CHARACTER expression that specifies the mode in which the READ-XML( ) method verifies any XML Schema against existing Progress schema. The expression must evaluate to “IGNORE”, “LOOSE”, or “STRICT”. The default value is “LOOSE”.
Note: For a dynamic temp-table or ProDataSet member buffer that does not have Progress schema (that is, the object is in the CLEAR state), this option is ignored.Table 79 lists the READ-XML( ) method schema verification modes.
If you specify the Unknown value (
?), the method uses the default value of LOOSE.If the XML Schema verification fails, the method generates an error message indicating the XML Schema element that caused the failure and returns FALSE.
ExamplesThe following code example creates a dynamic ProDataSet object from an empty ProDataSet handle, creates the object’s schema from the specified XML Schema file, and populates the temp-tables with records from the specified XML document:
The following code example creates a dynamic temp-table object from an empty temp-table handle, creates the object’s schema from the specified XML Schema file, and populates the temp-table with records from the specified XML document:
Notes
- If the ProDataSet or temp-table object does not have a schema (that is, the object is dynamic and in the CLEAR state), Progress creates the schema from either the XML Schema file specified in
schema-location, or the XML Schema defined or referenced in the XML document. If a dynamic temp-table is not in the PREPARED or CLEAR state, the method generates an error and returns FALSE.If the ProDataSet or temp-table object already has a schema (that is, the object is static, or the temp-tables are in the PREPARED state), Progress verifies any XML Schema specified by
schema-location, or defined or referenced in the XML document, against the object’s schema, unless theverify-schema-modeis “IGNORE”.If Progress cannot identify any XML Schema for the ProDataSet or temp-table object, (that is,
schema-locationis the empty string ("") or the Unknown value (?) and the XML document does not define or reference a schema, Progress infers the schema from the data in the XML document.For more information about creating schema from XML Schema, verifying XML Schema, or inferring schema from XML document text, see OpenEdge Development: Programming Interfaces .
Note: During the read operation, Progress does not respond to ProDataSet events, and it does not track changes to the data in the ProDataSet or temp-table object (that is, it does not update the before-image tables) unless the XML document data is in the Microsoft DiffGram format.- The XML document can also contain before-image table data associated with a ProDataSet object. If the XML document data is in the Microsoft DiffGram format, the method reads the before-image data as well. In this case, if the ProDataSet or temp-table object is static and it does not have a before-image table defined, the method generates an error and returns FALSE. If the ProDataSet or temp-table object is dynamic, the method creates the before-image table automatically.
- You cannot read an XML document into a database buffer.
See also
IS-XML attribute, READ-XMLSCHEMA( ) method, WEB-CONTEXT system handle, WRITE-XML( ) method, WRITE-XMLSCHEMA( ) method, X-document object handle, X-noderef object handle
|
Copyright © 2005 Progress Software Corporation www.progress.com Voice: (781) 280-4000 Fax: (781) 280-4095 |